{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "35f3ab51",
   "metadata": {},
   "source": [
    "## 欧拉角\n",
    "\n",
    "- 由三个角度 (x, y, z) 组成，在特定坐标系下用于描述物体的旋转量。\n",
    "- 空间中的任意旋转都可以分解成绕三个互相垂直的轴的旋转序列。\n",
    "- 欧拉角旋转约定:heading-pitch-bank(是一种最常用的旋转序列约定)\n",
    "    - heading:物体绕自身对象坐标系的Y轴旋转的角度\n",
    "    - pitch:物体绕自身的对象坐标系的X轴旋转的角度\n",
    "    - bank:物体绕自身对象坐标系的Z轴旋转的角度\n",
    "- 欧拉角的优缺点\n",
    "    - 优点: 直观,易理解\n",
    "        - 存储空间小(三个数表示)\n",
    "        - 可以进行从一个方向到另一个方向旋转大于180度的角度\n",
    "    - 缺点:\n",
    "        - 同一个旋转表示不唯一\n",
    "        - 万向节死锁:绕一个轴可以覆盖另一个轴的旋转从而失去一维自由度,在Unity中x轴达到90度会产生万向节死锁\n",
    "- 因此在计算机中采用四元数的方式来形容角度\n",
    "\n",
    "## 四元数\n",
    "\n",
    "- 四元数是简单的超复数,由实数加上三个虚数单位组成,主要用于在三维空间中表示旋转\n",
    "- 一个四元数包含一个标量和一个3D向量 [w,(x,y,z)],对于任意一个四元数,其表示3d空间的一个旋转量\n",
    "\n",
    "### 轴-角对\n",
    "- 对于给定旋转,假定设为绕这n轴,旋转b度,n轴为(x,y,z),那么四元数为\n",
    "    Q = [cos(b/2),sin(b/2)(x,y,z)] 表示绕着轴n,旋转b度的旋转量"
   ]
  }
 ],
 "metadata": {
  "language_info": {
   "name": "python"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
